【发布时间】:2015-05-12 21:17:53
【问题描述】:
int ascii[1000] = {0};
string *data = (string*)malloc ( 1000*sizeof( string));
char *text = (char*)malloc ( 1000 *sizeof( char));
cout << "Enter the first arrangement of data." << endl;
cin.getline(text, 1000);
char *token = strtok(text, " ");
while ( token != NULL )
{
if ( strlen(token) > 0)
{
cout << "The tokens are: " << token << endl;
data[Tcount++] = *token;
}
token = strtok(NULL, " ");
for(i=0; i < (Tcount); i++)
{
ascii[i] = (int)data[i]; // error here
}
我正在使用此代码构建解析器,并且我想将存储在“数据”中的标记的 ascii 值存储到名为“ascii”的数组中。
当我运行程序时,我收到错误消息,“错误:从不兼容的类型'string'(又名'basic_string,分配器>')分配给'int'
任何帮助将不胜感激。
【问题讨论】:
-
string::data()也许?它会给你char *中的数组。刚刚在这里进行了测试,从char到int的显式转换工作正常。编辑:等等..我想我理解你的问题是错误的..这只有在你想要字符串中每个字符的 ascii int 时才有效。编辑 2. 如果您不介意 hack 并且您的数字限制为 1 位,您仍然可以使用它,因为您知道数字 0 的 ascii 值。 -
string *data = (string*)malloc ( 1000*sizeof( string));这是什么鬼? 0.o -
我是否正确地说这篇文章的绝大多数内容是无关紧要的,而您实际上是在问如何在 C++ 中将数字
string解析为int?因为这里和网络上的其他地方都有大量关于如何做到这一点的信息。至少在这里,您还可以免费获得警告,远离您正在进行的这种可怕的、可怕的 C 混搭! -
等一下,您如何期望
asd存储在int中?? -
不要使用
malloc/free来分配std::string等C++对象,请改用new/delete操作符。那是因为可能需要为这些对象调用构造函数/析构函数。另外,这里甚至不需要它,只需使用std::string data;,它就会为您管理内存分配。