我需要输入一个带有两个fullstop的字符串,但是这段代码输入了最后一个fullstop。 当输入是:“思想就是一切。你认为自己变成什么样。”接下来是回车键和“坐下”
程序存储:“心灵就是一切。你认为自己变成了什么”,tem
,它错过了最后一个完整停止,而不是最后一个存储在pas
中:
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
int main(){
char tem[50];
String pas=""
cin.get(tem,50);
cin>>pas;
cout<<tem<<endl;
}
答案 0 :(得分:1)
您分配的缓冲区大小为50个字符长,您输入的字符串也是50个字符长,但cin.get
需要1个字符来终止0,因此它会占用您的句点。使缓冲区51长并读取51个字符。
#include <iostream>
int main()
{
char tem[51];
std::cin.get(tem, 51);
std::cout << tem << std::endl;
}
如果您使用std::string
代替,则无需担心输入不适合您的缓冲区:
#include <iostream>
#include <string>
int main()
{
std::string tem;
std::getline(std::cin, tem);
std::cout << tem << std::endl;
}
答案 1 :(得分:-1)