作者gn00771771 (耳朵业障重)
看板C_and_CPP
标题[问题] Segmentation fault (core dumped)的问题
时间Thu Nov 30 20:16:43 2017
开发平台(Platform): (Ex: Win10, Linux, ...)
Linux centos7
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
GCC
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
无
问题(Question):
我利用getline把cin的整行文字或数字存成string,但想个别处理这个string的每一个
字,所以我另外用了一个vector<string>去逐字的塞进去。
用的方法是在for回圈内加入:vector[i].push_back(string.at(i));
但编译没问题後,在我cin喂入资料後,却显示Segmentation fault (core dumped)。
喂入的资料(Input):
随意字串
预期的正确结果(Expected Output):
个别塞入vector中运用
错误结果(Wrong Output):
Segmentation fault (core dumped)
程式码(Code):(请善用置底文网页, 记得排版)
1 #include <iostream>
2 #include <fstream>
3 #include <string>
4 #include <vector>
5 using namespace std;
6
7
8 int main()
9 {
10 vector<string> v;
11 string sin;
12
13 cout << "input"<<endl;
14 getline(cin,sin);
15
16 for(int i=0 ;i < sin.length() ; i++)
17 {
18 v[i].push_back(sin.at(i));
19 }
20 /*
21 for(int j=0;j<respectively.size();j++)
22 {
23 cout<< respectively[j]<<endl;
24 }
25 */
26 return 0;
27
28
补充说明(Supplement):
我之前也遇过Segmentation fault (core dumped),我认为应该是vector或string的空间
不够,但vector和string都从0开始,想了又试了好久都无解,想请问各位大神QQ,感激
不尽!!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.116.91.168
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1512044206.A.46A.html
※ 编辑: gn00771771 (140.116.91.168), 11/30/2017 20:17:41
※ 编辑: gn00771771 (140.116.91.168), 11/30/2017 20:18:22
1F:→ nh60211as: vector<string>没初始化大小吧 11/30 20:36
可是vector不是可以让他要输入多少值来决定自身sizeQQ?
2F:→ galic: 你这不知道从哪边说起耶... vector<string> v[i] 11/30 20:37
这个i是在回圈内的,表示第几个元素...不知道大大您的意思是qq?
编辑: gn00771771 (140.116.91.168), 11/30/2017 21:28:25
※ 编辑: gn00771771 (140.116.91.168), 11/30/2017 21:30:17
3F:→ loveflames: 天哪,这麽明显的包你竟然还没发现 11/30 21:34
4F:→ loveflames: 第18行请问是push_back给谁来着 11/30 21:35
6F:→ loveflames: ector/ 11/30 21:37
谢谢你love大!我犯了一个大错,竟把所有东西都push_back到单一string,但是我把[i]
拿掉以後,似乎发现string doesn't have a conversion constructor that accepts
only a single char as input
" invalid user-defined conversion from ‘char’to ‘const value_type&"
我要在想想QQ谢谢love大!!
7F:→ galic: 给小精灵来着 小精灵被吵醒 触发segmentation fault 11/30 21:37
※ 编辑: gn00771771 (140.116.91.168), 11/30/2017 21:55:07
※ 编辑: gn00771771 (140.116.91.168), 11/30/2017 21:55:57
我把vector<string>改成vector<char>就ok了,谢谢各位老师!!
※ 编辑: gn00771771 (140.116.91.168), 11/30/2017 22:00:39
8F:推 steve1012: char vector感觉跟你想做的不一样啊 12/01 00:11
我想把一行字串每一个char存在vector的一个元素
9F:推 moebear: 你sin用at v干嘛不用at 12/01 00:27
!!!!惭愧,我不知道vector也有at function
感谢各位老师学长姐QQ
※ 编辑: gn00771771 (140.116.91.168), 12/01/2017 06:05:35
10F:→ loveflames: 如果考虑C API(写入字串),是可以用vector<char>,这 12/01 07:41
11F:→ loveflames: 方法effective STL提过 12/01 07:41
12F:→ loveflames: 记得不能影响长度就是 12/01 07:41
13F:推 shadow0326: vector<char> v(sin.begin(), sin.end()); 12/01 11:50
14F:推 moebear: 没事可以去cplusplus看一下有什麽可以用R 12/01 13:21