注册 登录
编程论坛 C++教室

一个简单的vector问题

fl8962 发布于 2014-01-30 10:32, 573 次点击
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
  int i,j;
  vector<string> a;
  vector<string>::iterator p;
  p=a.begin();
  string word[10];
  for(i=0;i<10;++i)
  {  cin>>word[i];
    a.push_back(word[i]);
  }
for(p=a.begin();p!=(p+7);++p)
   {
     cout<<*p<<" ";
   }
  return 0;
}
我就是想输入字符串到这个string vector 里面,然后输出,不知道为什么一直是segementation fault, 请问下大家我这样做有什么问题。谢谢。
6 回复
#2
zklhp2014-01-30 19:19
我看你的意思好像是 输入10个字符串 取前七个?空格间隔输出?

我写了一个。。

程序代码:

#include<iostream>
#include<vector>
#include<string>

using std::cin;
using std::cout;
using std::string;
using std::vector;

int main(void)
{
    size_t i = 0;
    const size_t num_read = 10;
    string read("");
    vector<string> str_vec;

    while (cin >> read)
    {
        ++i;
        str_vec.push_back(read);
        if (i == num_read)
            break;
    }
    const size_t num_print = 7;
    for (vector<string>::iterator p = str_vec.begin(); p != str_vec.end() && distance(str_vec.begin(), p) != num_print; ++p)
        cout << *p << " ";
    return 0;
}




[ 本帖最后由 zklhp 于 2014-1-30 19:24 编辑 ]
#3
郁闷的终结2014-02-01 12:31
我们老师直接PASS了这一部分,我是一头雾水啊,谁能给我解释解释?
#4
fl89622014-02-01 12:43
回复 3楼 郁闷的终结
如何解释。。。又不是打几个字就能说明白,我也是,我老师还在给我们讲C语言的数组。
#5
TonyDeng2014-02-01 13:22
程序代码:

#include <conio.h>
#include <string>
#include <iostream>
#include <vector>

int wmain(void)
{
    std::vector<std::wstring> list_string;

    for (std::wstring str(L""); str != L"end"; std::wcin >> str)
    {
            list_string.push_back(str);
    }

    for (std::vector<std::wstring>::const_iterator iterator = list_string.cbegin(); iterator != list_string.cend(); ++iterator)
    {
        std::wcout << *iterator << std::endl;
    }

    _getwch();
    return 0;
}

輸入end結束循環!


[ 本帖最后由 TonyDeng 于 2014-2-1 13:26 编辑 ]
#6
TonyDeng2014-02-01 13:35
樓主的問題,是沒搞清楚string和vector的概念,不需要借用char[]數組的,顯然是學C的基礎妨礙了學C++,這是又一明證。我總不明白爲什麽總有人說學C++之前非要學C不可的,當然不是說不能學,但問題是這個人得要有足够的靈活性,把握得到什麽該放、什麽該守才成,否則那祇能是障礙。

順便說一下,上面這些東西,不過是用了C++的皮毛語法,完全不涉及C++面向對象的本質,其實仍然是C代碼,無非是使用了更豐富的語法和庫函數而已。不要再說祇有用cin/cout才是C++了,在C++中,用scanf/printf也未嘗不可。關鍵是精神,不是語法。

[ 本帖最后由 TonyDeng 于 2014-2-1 13:40 编辑 ]
#7
fl89622014-02-01 15:09
回复 6楼 TonyDeng
谢谢版主的指点,上大学之前自己看了点c++,现在大一又教c语言。这两种我都是学了点皮毛,谢谢你的指正。
1