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;
。这种讨厌的做法只会自找麻烦。