我正在尝试编写一个程序,它接受用户的输入并将整个段落存储在变量中。但是,如果用户输入:“你好,这是一些文字。”它只返回“你好”任何人都可以帮忙吗?
谢谢!
#include <iostream>
#include <iomanip>
using namespace std;
class GetText
{
public:
string text;
void userText()
{
cout << "Please type a message: ";
cin >> text;
}
void to_string()
{
cout << "\n" << "User's Text: " << "\n" << text << endl;
}
};
int main() {
GetText test;
test.userText();
test.to_string();
return 0;
}
答案 0 :(得分:3)
答案 1 :(得分:2)
使用cin获取值时,输入流默认将空格视为字符串拆分分隔符。相反,你应该使用std :: getline(),它读取输入直到它检测到新的行字符。
但是,正如我上面所说,std :: getline()读取输入,直到它检测到新的行字符,这意味着它一次只能读取一行。因此,为了读取包含多行的整个段落,您需要使用循环。
#include <iostream>
#include <iomanip>
#include <string> //For getline()
using namespace std;
// Creating class
class GetText
{
public:
string text;
string line; //Using this as a buffer
void userText()
{
cout << "Please type a message: ";
do
{
getline(cin, line);
text += line;
}
while(line != "");
}
void to_string()
{
cout << "\n" << "User's Text: " << "\n" << text << endl;
}
};
int main() {
GetText test;
test.userText();
test.to_string();
system("pause");
return 0;
}
此代码逐行读取流,将当前行存储在字符串变量“line”中。我使用变量“line”作为输入流和变量“text”之间的缓冲区,我使用+ =运算符存储整个段落。它读取输入,直到当前行为空行。