我希望输出:
acej
这在此算法中工作得很好,但在输出结果时存在问题,该问题会导致堆栈溢出。
我该如何修复它?
#include <iostream>
#include <vector>
std::vector<char> charAt(std::vector<char> str)
{
std::vector<char> result;
result.resize(str.size());
for (int i = 0; i < str.size(); i++)
{
if (i % 2 == 0)
{
for (int j = 0; j < str.size(); j++)
{
if (result[j] == '\0')
{
result[j] = str[i];
break;
}
}
}
}
return result;
}
std::ostream& operator<<(std::ostream& stream, std::vector<char> vector)
{
stream << "Vector: " << vector << std::endl;
return stream;
}
int main() {
std::vector<char> foo = { 'a', 'b','c','d','e','f','j' };
std::vector<char> bar = charAt(foo);
std::cout << bar << std::endl;
}发布于 2017-01-23 19:40:47
您是否打算使用std::string,而使用了错误的STL容器。
#include <iostream>
std::string charAt(std::string str)
{
std::string result;
result.resize(str.size());
for (int i = 0; i < str.size(); i++)
{
if (i % 2 == 0)
{
for (int j = 0; j < str.size(); j++)
{
if (result[j] == '\0')
{
result[j] = str[i];
break;
}
}
}
}
return result;
}
int main() {
std::string foo = { 'a', 'b', 'c', 'd', 'e', 'f', 'j' };
std::string bar = charAt(foo);
std::cout << bar << std::endl;
}输出
acejhttps://stackoverflow.com/questions/41803608
复制相似问题