如何使用将字符串拆分为 for 循环中的变量的程序
How to use a program that splits a string as a variable in a for loop
这是一个问题:是否可以使用拆分字符串的程序,以便该程序的值用作for循环中的变量。
这是拆分字符串的程序:
#include <iostream>
#include <string>
#include <algorithm>
#include <iterator>
#include <vector>
#include <sstream>
template <class Container>
void f(const std::string& str, Container& cont)
{
std::istringstream iss(str);
std::copy(std::istream_iterator<std::string>(iss),
std::istream_iterator<std::string>(),
std::back_inserter(cont));
}
int main()
{
char str[] = "The quick brown fox jumps over the lazy dog";
std::vector<std::string> words;
split1(str, words);
std::copy(words.begin(), words.end(),
std::ostream_iterator<std::string>(std::cout, " "));
}
然后,在 main(( 程序中,我想编写一个 for 循环,该循环迭代从拆分字符串的程序返回的值,并打印其中的项目。类似这个:
int main() {
#some statements
//var1 should be the value returned from the program that splits the string
for (int i = 0 ; i<=strlen(var1); i++) {
cout << var1[i]; }
}
我在想,也许拆分字符串的整个程序可以变成一个函数;然后可以将该函数的调用分配给变量var1
;这意味着var1
应该是一个字符串或一个char数组,这在某种程度上与在这种情况下使用的函数类型相冲突。
是否可以使用 C++ 语法执行此类操作? 我最近开始使用C++,有些事情看起来很复杂。
谢谢!
我想澄清这个问题的答案,因为通常适用于字符串或字符数组的迭代形式不能在这里使用。
我通过在 std::vector 上使用带有索引的迭代来修复代码。
#include <iostream>
#include <string>
#include <algorithm>
#include <iterator>
#include <vector>
#include <sstream>
#include <cstring>
using namespace std;
template <class Container>
void split1(const std::string& str, Container& cont)
{
std::istringstream iss(str);
std::copy(std::istream_iterator<std::string>(iss),
std::istream_iterator<std::string>(),
std::back_inserter(cont));
}
int main()
{
char str[] = "The quick brown fox jumps over the lazy dog";
std::vector<std::string> words;
split1(str, words);
std::copy(words.begin(), words.end(),
std::ostream_iterator<std::string>(std::cout, " "));
cout << "n";
for (std::vector<int>::size_type i = 0; i != words.size(); i++){
cout << words[i] << " "; }
}
执行代码后:
The quick brown fox jumps over the lazy dog
The quick brown fox jumps over the lazy dog
函数strlen()
和变量var1
必须替换为size()
和变量words
。除此之外,必须替换 for 循环中的条件,以便适合在 std::vector 上进行迭代。
相关文章:
- 是否可以禁止在for循环体内部修改循环变量
- 使用 size_t 初始化循环变量时的整数下溢
- 在循环中重新声明 for 循环变量时出错
- 为什么这个循环变量在循环范围之外是可访问的
- 关于循环变量优化的标准合规行为是什么?
- 用于 C/C++ 中的循环变量优化
- C++循环变量按另一个变量递增
- 使用循环变量作为C++数组的索引
- 如何循环变量
- 如何在字符串(名称)中使用循环变量
- strlen函数与循环不兼容,循环变量不兼容
- 使用浮点/双精度作为循环变量
- C 或 C++ :表示循环变量
- 为循环变量声明键入 int32_t
- 使用 if 语句交换循环变量
- OpenMP中调度程序对循环变量的处理
- 对于C++中的循环-变量没有正确递增
- C++11 基于范围的 for 循环,无循环变量
- 在循环之外使用for循环变量是错误的吗?
- For循环变量无缘无故地下地狱