我是C ++的新手,虽然在C中编程了一段时间。 尝试读取字符串,然后使用strtol将字符串转换为int。 我使用gcc编译器。 并且我收到以下错误消息:" c ++错误:无法转换' std :: __ cxx11 :: string {aka std :: __ cxx11 :: basic_string}'到#char; char *'争论' 1' to' long int strtol(const char *,char **,int)' int c = strtol(str [j],& p,10);"。 我尝试了不同类型的转换,但非常喜欢strtol以供将来参考。我的矢量字符串有什么用处吗?
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
using std::string;
int main()
{
int a = 0;
int i = 0;
int size = 0;
int* big;
cin>>a;
size = a*2;
int sizes[size];
string *str = new string[size];
while(i < a){
cin>>str[i];
i++;
}
i = 0;
while(i < a){
cout << str[i] << endl; // just for checking
i++;
}
for (int j =0; j<size-1;j++){
char* p;
char* q;
int c = strtol(str[j], &p, 10);
if (!*p) {
sizes[j] = *p;
}else{
sizes[j] = *p/2;
}
}
return 0;
}
提前致谢!
答案 0 :(得分:1)
您可以使用strtol(str[j].c_str(), &p, 10)
;对c_str()
的调用会返回指向字符串对象内容的const char*
,strtol
需要const char*
。或者您可以编写更多惯用代码,并致电std::stol(str[j])
。