c++利用cin.get()输入带空格的一串数据【追加悬赏】

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++利用cin.get()输入带空格的一串数据【追加悬赏】相关的知识,希望对你有一定的参考价值。

需要用cin。get(输入一串数据,其中可能包含空格)
比如:输入abc 2df,则输出为abc 2df。
我做的程序如下:
#include <iostream>
#include <string>
using namespace std;

int main()

int t=0;
string str2;
char a;
while(cin.get(a))

if(a!='\n')

str2[t]=a;
t++;

else break;

cout<<str2;

cin.get();
cin.get();
return 0;


以以上程序为例,输入abc时,通过逐行运行可以得到,在运行到b的时候,会出现string subscript out of range的错误。这是为什么呢? stirng类型不是可以默认当做数组用的吗?
【ps:解决问题追加50分O(∩_∩)O~】
1.那个append的用法我没有查到,请问这些函数您在哪里查用法呢?
2.cin.getline()这个用法我看网上说要输入两个回车,虽然我实践的时候没有输入两个回车,但是我不确定别的编译器是不是要输入两个回车,我不敢用···

stirng类型不是可以默认当做数组用的吗?

那也得分配了内存才能这么用啊!否则就下标溢出了。

str2[t]=a;
t++;
你应该用 str2.append(1,a); 或者 str2 += a;

此外,你的思路不对。你的目的是读取一行对吧?用cin.getline就可以了噢!不是更方便吗
参考技术A append用法参考:
http://www.cppreference.com/wiki/string/append
不推荐cin.getline()
推荐getline,参考:
http://www.cppreference.com/wiki/string/getline

参考资料:http://www.cppreference.com/wiki/start

参考技术B 你的逻辑我无法理解

如何输入带空格的字符串

问题一:带空格的字符串输入(c++)

      对于string类

      getline(cin, str)

技术图片

技术图片

 

对于字符数组
方法一:getline()
读入整行数据,使用回车键输入的换行符来确定输入结尾。
调用方法:
cin.getline(str, len)
第一个参数str用来存储输入行的数组名称,第二个参数是要读取的字符数。
 
方法二:
cin.get(str, len)
两者都是读取一行输入,直至换行符。
然后,getline将换行符丢弃,而get()将换行符保留在输入序列里

技术图片

 

问题一:带空格的字符串输入(c语言)
C输入使用scanf函数,但scanf默认回车和空格是输入不同组之间的间隔和结束符号
所以输入带空格,tab或者回车的字符串是不可以的,解决方法如下
  1)利用格式符“%[]”它的作用为扫描字符集合。Scanf(“%[^c]”,str); 其中“c”是一个具体的字符常量(包括控制字符)。当输入字符串时,字符“c”将被当作当前输入的结束符。利用此格式符就可以由编程者自己指定一个输入结束符。
技术图片
技术图片

      


以上是关于c++利用cin.get()输入带空格的一串数据【追加悬赏】的主要内容,如果未能解决你的问题,请参考以下文章

c++ 文件操作 如何处理空格的

C++基础:各种输入方法总结,cincin.get()cin.getline()getline()gets()getchar()

C++ 关于cin的使用

皮皮君的C++第三周总结

为啥不能用scanf读入一个含有空格的字符串

C++输入cin详解