C++ C++;getline()不';t端输入
将代码更改为 getline(cin,str,c[0]) 将代码更改为 getline(cin,str,c[0])C++ C++;getline()不';t端输入,c++,string,input,getline,C++,String,Input,Getline,将代码更改为 getline(cin,str,c[0]) 将代码更改为 getline(cin,str,c[0]) 您可能需要稍微重新设计代码,例如,如果分隔符是一个字符,那么为什么要读取字符串(并使用一种晦涩的语法,如“c.c_str()[0]”—至少只需使用c[0]从字符串中提取第一个字符)?只需读取单个分隔符 此外,我从getline()中没有看到意外的结果 如果您尝试此代码: Insert the character that ends the input: } Insert the s
您可能需要稍微重新设计代码,例如,如果分隔符是一个字符,那么为什么要读取
字符串
(并使用一种晦涩的语法,如“c.c_str()[0]
”—至少只需使用c[0]
从字符串中提取第一个字符)?只需读取单个分隔符
此外,我从getline()
中没有看到意外的结果
如果您尝试此代码:
Insert the character that ends the input:
}
Insert the string:
asdf
}
do it}
damn}
您可能需要稍微重新设计代码,例如,如果分隔符是一个字符,那么为什么要读取
字符串
(并使用一种晦涩的语法,如“c.c_str()[0]
”—至少只需使用c[0]
从字符串中提取第一个字符)?只需读取单个分隔符
此外,我从getline()
中没有看到意外的结果
如果您尝试此代码:
Insert the character that ends the input:
}
Insert the string:
asdf
}
do it}
damn}
您的代码和示例输出不同。你能贴出正确的吗?你的代码对我有用。但是我会用一个直接的
char
来代替c[0]
,而不是c.c\u str()[0]
也可以,但是我不能重现这种行为(g++-4.7,Ubuntu 12.10)。我有LLVM,而使用c[0]
则不行work@fpiro我想你指的是clang或llvm gcc(llvm本身不是编译器)。在任何一种情况下,这都应该很好。您的代码和示例输出是不同的。你能贴出正确的吗?你的代码对我有用。但是我会用一个直接的char
来代替c[0]
,而不是c.c\u str()[0]
也可以,但是我不能重现这种行为(g++-4.7,Ubuntu 12.10)。我有LLVM,而使用c[0]
则不行work@fpiro我想你指的是clang或llvm gcc(llvm本身不是编译器)。在任何一种情况下,这都应该很好。@Predheep-c是一个字符,不允许为一个字符类型下标。@Predheep-c是一个字符,不允许为一个字符类型下标。谢谢大家,我发现错误就在这个输入之后的算法中。谢谢大家,我发现错误就在这个输入之后的算法中。
#include <iostream>
#include <string>
using namespace std;
int main()
{
cout << "Insert the character that ends the input: " << endl;
char delim;
cin >> delim;
string str;
cout << "Insert the string: " << endl;
getline(cin, str, delim);
cout << "String: " << str << endl;
}
C:\TEMP\CppTests>cl /EHsc /W4 /nologo /MTd test.cpp
test.cpp
C:\TEMP\CppTests>test.exe
Insert the character that ends the input:
!
Insert the string:
hello!world
String:
hello