它看起来像当我cout * cp时,它只输出字符串的第一个字母,并且在将它们放入向量之后,我的输出为空。我究竟做错了什么?char *到字符串向量的列表
//write a program to assign the elements from a list of char* pointers to c-style character strings to a vector of strings
#include <iostream>
#include <cstring>
#include <vector>
#include <list>
#include <string>
using namespace std;
int main()
{
list<const char*> clist;
cout<<"please enter a string"<<endl;
for(string s; getline(cin,s);)
{
const char* cp=s.c_str();
clist.push_back(cp);
cout<<*cp;
}
cout<<*clist.begin();
vector<string> svec;
svec.assign(clist.begin(),clist.end());
for(vector<string>::iterator iter=svec.begin(); iter!=svec.end(); ++iter)
cout<<*iter<<endl;
return 0;
}
http://codereview.stackexchange.com而不是标记,虽然这不是一个真正的CR问题 –
'COUT << * CP;',当你提领了'cp'变量(使用'*'运算符),你从你的字符串得到一个单一的字符。因此,为了打印整个字符串,你甲肝e传递实际的指针,例如:'cout << cp;'。然而,你应该使用'std :: string'而不是*裸指针*。 – jweyrich
是什么让你知道你应该使用指针?如果你不熟悉C++,你可能会考虑这个伪规则:“如果你使用的是指针,那么你就是在做错了。” –