如何忽略 fscanf 中的引号
how to ignore quote in fscanf
我在从文本文件中读取字符串时遇到问题。在文件中有这种格式的数据:
某事="test"
我想读取引号之间的字符串。所以在我的程序中我这样做:
fscanf(fil,"language=\"%s[^\"]",data);
或
fscanf(fil,"language=\"%s\"",data);
但我总是在可变数据中得到 test"。我怎么能忽略第二个引号?除了在文件中放置 space 之前。我想要文本文件中的格式。
我将不胜感激。
如果您不想深入考虑格式化字符串,您总是可以读入完整的字符串,而不是取出您想要的子字符串。
示例:
以下代码在 str
中搜索第一个 "
和最后一个 "
并将子字符串放入 strNew
.
#include <string>
#include <iostream>
using namespace std; //used for ease but not the best to use in actual code.
int main()
{
string str = "variable=\"name\"";
cout << str << endl;
int first = str.find("\"");
int last = str.find_last_of("\"");
string strNew = str.substr (first + 1, last - first -1);
cout << strNew << endl;
return 0;
}
我在从文本文件中读取字符串时遇到问题。在文件中有这种格式的数据:
某事="test"
我想读取引号之间的字符串。所以在我的程序中我这样做:
fscanf(fil,"language=\"%s[^\"]",data);
或
fscanf(fil,"language=\"%s\"",data);
但我总是在可变数据中得到 test"。我怎么能忽略第二个引号?除了在文件中放置 space 之前。我想要文本文件中的格式。
我将不胜感激。
如果您不想深入考虑格式化字符串,您总是可以读入完整的字符串,而不是取出您想要的子字符串。
示例:
以下代码在 str
中搜索第一个 "
和最后一个 "
并将子字符串放入 strNew
.
#include <string>
#include <iostream>
using namespace std; //used for ease but not the best to use in actual code.
int main()
{
string str = "variable=\"name\"";
cout << str << endl;
int first = str.find("\"");
int last = str.find_last_of("\"");
string strNew = str.substr (first + 1, last - first -1);
cout << strNew << endl;
return 0;
}