C++ 使用ifstream和Get()从文件中获取一个由引号表示的字符串

C++ 使用ifstream和Get()从文件中获取一个由引号表示的字符串,c++,c++11,io,ifstream,C++,C++11,Io,Ifstream,我试图解析文件中的字符串,这些字符串在文件中用双引号表示。一旦我找到一个字符串,我将把它存储在一个变量中,并用它做我想做的事情(为了这个问题的目的,让我们说打印它)。我的问题是我不知道如何获取这些字符串,特别是如果它们有空格的话。 以下是输入的示例: 100 20 "String" "With Space" 'c' ' ' 注意:此输入中唯一的字符串是String和带空格的。所有其他数据最终都应该被忽略。这是我的代码,根本不打印任何东西 int main(int argc, char *arg

我试图解析文件中的字符串,这些字符串在文件中用双引号表示。一旦我找到一个字符串,我将把它存储在一个变量中,并用它做我想做的事情(为了这个问题的目的,让我们说打印它)。我的问题是我不知道如何获取这些字符串,特别是如果它们有空格的话。 以下是输入的示例:

100 20
"String"
"With Space"
'c' ' '
注意:此输入中唯一的字符串是
String
和带空格的
。所有其他数据最终都应该被忽略。这是我的代码,根本不打印任何东西

int main(int argc, char *argv[]) {
    for (int i = 1; i < argc; i++) {
        ifstream input;
        input.open(argv[i]);

        char c;
        while (input.get(c)) {
            if (c == '"') {
                string s;
                while (c != '"') {
                    char letter;
                    input.get(letter);
                    s += letter;
                }
                cout << s << "\n";
            }       
        }
    }
}
intmain(intargc,char*argv[]){
对于(int i=1;i
    if (c == '"') {
        string s;
        while (c != '"') {
无法进入
while
循环

在测试带引号字符串的结尾之前,需要读取下一个字符

比如说:

    if (c == '"') {
        string s;
        while (input.get(c) && c != '"') {
            s += c;
        }
        cout << s << "\n";
    }       
if(c==”){
字符串s;
while(input.get(c)&&c!=“”){
s+=c;
}
遗憾的是,你不能使用C++14…作为旁白,永远不要使用
使用namespace std;
。这种讨厌的做法只会自找麻烦。