我正在尝试使用此选择排序算法对数组的内容进行排序。但是我正在使用的编译器(codeblocks)给出了一个错误,指出“无法在赋值中将'std :: string {aka std :: basic_string}'转换为'int'。”这是参考行读取minvalue = wordarray[startscan];
minvalue和startscan都是int,而wordarray是一个数组。这是我的代码:
#include <iostream>
#include <fstream>
using namespace std;
string wordarray [1024];
int main()
{
int wordcount = 0;
string filename;
cout << "Please enter the name and location of your file." << endl;
cin >> filename;
ifstream testfile;
testfile.open (filename.c_str());
for (int i=0; i < 1024; ++i)
{
testfile >> wordarray[i];
cout << wordarray[i] << endl;
}
testfile.close();
}
void arraysort (int size)
{
int startscan, minindex;
int minvalue;
for (startscan = 0; startscan < (size - 1); startscan++)
{
minindex = startscan;
minvalue = wordarray[startscan]; //here
for (int index = startscan + 1; index < size; index ++)
{
if (wordarray[index] < minvalue)
{
minvalue = wordarray[index];
minindex = index;
}
}
wordarray[minindex] = wordarray[startscan];
wordarray[startscan] = minvalue;
}
}
答案 0 :(得分:4)
错误消息以清晰的方式描述您的代码。
string wordarray [1024]; // strings
/**/
int minvalue; // int
/**/
minvalue = wordarray[startscan]; // attempt to assign a string to an int
你必须重新考虑该行应该做什么。
答案 1 :(得分:2)
string wordarray [1024];
是一个字符串数组。从字符串数组中获取元素会为您提供一个字符串:
auto word = wordarray[someInt]; //word is a string
在C ++中,没有从std::string
到int
的转换。