如何忽略 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;
}