String 我使用cin获取字符串输入,如下代码所示,它工作正常。还好吗? #包括 #包括 使用名称空间std; int main() {int n; chars[15]; cin>>n; cin>>s; 我对你在这里提出的问题有点困惑,但我注意到这里有些问题是可以解决的

String 我使用cin获取字符串输入,如下代码所示,它工作正常。还好吗? #包括 #包括 使用名称空间std; int main() {int n; chars[15]; cin>>n; cin>>s; 我对你在这里提出的问题有点困惑,但我注意到这里有些问题是可以解决的,string,c++11,fgets,cin,gets,String,C++11,Fgets,Cin,Gets,是的,您编译的代码可以运行。但是,它可以改进。 当提示您向char数组输入某些内容时,您会注意到它将不接受空格。因此,如果我输入Jon Smith,输出将仅为Jon,其余字符串输入将被切断。要解决此问题,您需要调用getline()函数 各国: 从is中提取字符并将其存储到str中,直到找到定界字符delim(或换行符“\n”…) 这将允许您从输入中获取空白,并将整个输入放回字符串中 如果将此函数调用添加到第二个输入提示所在的代码中,并且要运行代码,则会注意到只会收到一次提示,然后程序将在第二个

是的,您编译的代码可以运行。但是,它可以改进。 当提示您向
char
数组输入某些内容时,您会注意到它将不接受空格。因此,如果我输入
Jon Smith
,输出将仅为
Jon
,其余字符串输入将被切断。要解决此问题,您需要调用
getline()
函数

各国:

从is中提取字符并将其存储到str中,直到找到定界字符delim(或换行符“\n”…)

这将允许您从输入中获取空白,并将整个输入放回
字符串中

如果将此函数调用添加到第二个输入提示所在的代码中,并且要运行代码,则会注意到只会收到一次提示,然后程序将在第二个提示执行之前完成运行。这是因为
getline()
不会忽略前导空格字符,它会停止进一步读取,因为
cin>
在它被视为换行符之前

要使
getline()
cin>
一起工作,必须在调用
getline()
之前使用
cin.ignore()
。下面是我编写的一些代码,用于进行此调整:

#include<iostream>
#include<stdio>

using namespace std;

int main()
{   int n;
    char s[15];
    cin>>n;
    cin>>s;
    cout<<n*2<<"\n";
    cout<<s;
    return 0;
}
//示例程序
#包括
#包括
使用名称空间std;
int main()
{
int n;
string s;//使用string允许我们使用getline()
coutn;
cin.ignore();//忽略前导换行符

coutSure.谢谢
// Example program
#include <iostream>
#include <string>

using namespace std;

int main()
{
    int n;
    string s; //using string allows us to use getline()

    cout<<"Enter a number: "; //Let user know they are being prompt for number
    cin>>n;
    cin.ignore(); //ignore the leading newline

    cout<<"Enter a string: "; //let user know being prompt for string
    getline (cin,s);

    cout<<n*2<<"\n";
    cout<<s;
    return 0;
}