[問題] Segmentation fault (core dumped)的問題

作者: gn00771771 (耳朵業障重)   2017-11-30 20:16:43
開發平台(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,感激
不盡!!
作者: shadow0326 (非議)   2017-12-01 11:50:00
vector<char> v(sin.begin(), sin.end());
作者: moebear (萌熊)   2017-12-01 13:21:00
沒事可以去cplusplus看一下有什麼可以用R
作者: nh60211as   2017-11-30 20:36:00
vector<string>沒初始化大小吧
作者: galic (嘎利)   2017-11-30 20:37:00
你這不知道從哪邊說起耶... vector<string> v[i]
作者: loveflames (咕啾咕啾魔法陣)   2017-11-30 21:34:00
天哪,這麼明顯的包你竟然還沒發現第18行請問是push_back給誰來著http://www.cplusplus.com/reference/vector/vector/vector/
作者: galic (嘎利)   2017-11-30 21:37:00
給小精靈來著 小精靈被吵醒 觸發segmentation fault
作者: steve1012 (steve)   2017-12-01 00:11:00
char vector感覺跟你想做的不一樣啊
作者: moebear (萌熊)   2017-12-01 00:27:00
你sin用at v幹嘛不用at
作者: loveflames (咕啾咕啾魔法陣)   2017-12-01 07:41:00
如果考慮C API(寫入字串),是可以用vector<char>,這方法effective STL提過記得不能影響長度就是

Links booklink

Contact Us: admin [ a t ] ucptt.com