gpt4 book ai didi

c++ - 使用 std::getline() 读取一行?

转载 作者:行者123 更新时间:2023-11-30 00:42:41 26 4
gpt4 key购买 nike

我的目标是提示用户输入消息/句子,然后使用 getline() 在屏幕上打印出来。以下是我尝试过的两种不同的尝试。

第一次尝试:

#include <iostream>
#include <iomanip>
#include <cstring>
using namespace std;
int main(){

chat message[80];
cout << "\n what is your message today?" << endl;

cin.getline( message, 80); // Enter a line with a max of 79 characters.
if( strlen( message) > 0) // If string length is longer than 0.
{

for( int i=0; message[i] != '\0'; ++i)
cout << message[i] << ' ';
cout << endl;

}
}

第二次尝试:

#include <iostream>
#include <iomanip>
#include <cstring>
using namespace std;
int main(){

string a = "a string";
cout << "\n what is your message today?" << endl;
while(getline(cin,a))
cout << a;
cout<<endl

}
}

第一次尝试时,代码简单地打印出“What is your message today?”并退出。我根本没有机会输入任何字符串。第二次尝试时,它一直要求我输入消息。每次,当我用“\n”输入内容时,它都会在屏幕上显示我输入的内容。我使用 control + c 中断正在运行的进程使其停止。

编辑:为了在我这边澄清和解释,我从较长的代码中提取了第一次尝试,如下所示。

#include <iostream>
#include <iomanip>
#include <cstring>
using namespace std;

char header[] = "\n *** C Strings ***\n\n"; // define a c string
int main()
{
char hello[30] = "Hello ", name[20], message[80]; // define a c string hello, declare two other c strings name and message
string a="fivelength";
cout << header << "Your first name: ";
cin >> setw(20) >> name; // Enter a word.


strcat( hello, name); // Append the name.
cout << hello << endl;
cin.sync(); // No previous input.
cout << "\nWhat is the message for today?"
<< endl;

cin.getline( message, 80); // Enter a line with a max of 79 characters.
if( strlen( message) > 0) // If string length is longer than 0.
{

for( int i=0; message[i] != '\0'; ++i)
cout << message[i] << ' ';
cout << endl;

}
return 0;
}

对于上面的代码,它没有给我在屏幕上输入消息的机会。我会把它作为另一个问题。

最佳答案

你太复杂了,你可以简单地使用 std::string ,这是事实上的 C++ 字符串,并在不使用循环的情况下调用该方法。

您不需要循环,因为您要重复读取行,而只想读取一行,因此不需要循环。

#include <iostream>
#include <string> // not cstring, which is the C string library

using namespace std;

int main(void)
{
string message; // it can be an empty string, no need to initialize it
cout << "What is your message today?" << endl;
getline(cin, message);
cout << message;
cout<<endl;

return 0;
}

输出(输入:“Hello Stack Overflow!”):

What is your message today?
Message: Hello Stack Overflow!

PS:正如@fredLarson 评论的那样,如果您在第一个示例中将 chat 更改为 char,它应该可以工作。但是,该代码与 C 有很多共同点。

关于c++ - 使用 std::getline() 读取一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58649067/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com