这是我目前的C ++代码。我想知道如何编写一行代码。我还会使用cin.getline(y)
或其他不同的东西吗?我已经检查过,但找不到任何东西。
当我运行它时,它完美地工作,除了它只键入一个字而不是我需要输出的整行。这是我需要帮助的。我在代码中概述了它。
感谢您的帮助
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <fstream>
using namespace std;
int main()
{
char x;
cout << "Would you like to write to a file?" << endl;
cin >> x;
if (x == 'y' || x == 'Y')
{
char y[3000];
cout << "What would you like to write." << endl;
cin >> y;
ofstream file;
file.open("Characters.txt");
file << strlen(y) << " Characters." << endl;
file << endl;
file << y; // <-- HERE How do i write the full line instead of one word
file.close();
cout << "Done. \a" << endl;
}
else
{
cout << "K, Bye." << endl;
}
}
答案 0 :(得分:64)
代码cin >> y;
只读取一个单词,而不是整行。要获得一行,请使用:
string response;
getline(cin, response);
然后response
将包含整行的内容。
答案 1 :(得分:9)
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <string>
int main()
{
char write_to_file;
std::cout << "Would you like to write to a file?" << std::endl;
std::cin >> write_to_file;
std::cin >> std::ws;
if (write_to_file == 'y' || write_to_file == 'Y')
{
std::string str;
std::cout << "What would you like to write." << std::endl;
std::getline(std::cin, str);
std::ofstream file;
file.open("Characters.txt");
file << str.size() << " Characters." << std::endl;
file << std::endl;
file << str;
file.close();
std::cout << "Done. \a" << std::endl;
}
else
std::cout << "K, Bye." << std::endl;
}
答案 2 :(得分:3)
string str;
getline(cin, str);
cin >> ws;
您可以使用 getline 功能阅读整行而不是逐字阅读。并且 cin&gt;&gt; ws 可以跳过空格。你在这里找到一些细节: http://en.cppreference.com/w/cpp/io/manip/ws
答案 3 :(得分:0)
Cin 仅获取 1 个单词的输入。为了获得句子的输入,您需要使用 getLine(cin, y)
来获得输入的句子。您还可以为每个单词创建多个变量,然后使用 cin 获取像 cin >> response1, response2, response3, response3, etc;
这样的输入。