我已经声明了一个数组:names[1000];
和另一个数组data[1000];
,暂时存储数据
后来使用ifstream
从XML
文件中读取数据。
然后,我使用cin.getline(data, 300)
将数据放入data[]
数组。
但是当我将data[]
数组分配给names[]
数组时,会发生错误:
invalid operands of types char[1000] and char[1000] to binary operator>>
代码:
char data[1000];
char names[1000];
ifstream openFile("myfile.xml");
if(!openFile)
{
cout<<"File not found! please re-enter filename"<<endl;
}
while (openFile.getline (data, 300))
{
if (data[0] == '<' && data[1] == 'n') // to only check the <name> xml tag
{
cout<<data<<endl;
data >> names;
}
}
知道为什么我不能将数据数组分配给names数组吗?
谢谢!
答案 0 :(得分:1)
“&GT;&gt;” 中运算符通常是为流定义的,但数据只是一个数组。 如果要复制内容,请使用string.h中的strncpy:
strncpy(names, data, 1000);
如果您想将字符串/数组视为流,请尝试使用stringstream。
顺便说一句,你可能想要使用C ++字符串而不是字符数组 - 它更方便(但效率不高)。答案 1 :(得分:0)
因为您无法分配数组。完全没有。
您可能需要查看std::vector
或std::string
,这些内容可以分配给其他很酷的内容。
如果您想坚持char
数组,可以执行以下操作:
std::copy(std::begin(data), std::end(data), std::begin(names));
或(避免在第300个元素后复制垃圾):
std::copy(std::begin(data), std::begin(data) + 301, std::begin(names));
答案 2 :(得分:0)
运算符>>
不用于分配!您可以使用strncpy
这样分配
strncpy(names, data, 1000);
并添加include
#include <string.h>