c++中如何依次读取一个string中的所有元素?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++中如何依次读取一个string中的所有元素?相关的知识,希望对你有一定的参考价值。

比如abcdefg
依次读取char a='a' ,b='b' ............

参考技术A string重载了[]操作符,操纵一个string对象就像操纵一个普通数组一样方便!
eg:
string str = "abcdefg";
//str[0] == 'a'本回答被提问者采纳
参考技术B /*一次读入数组a中*/
#include"stdio.h"
void main()
int i=0;
char *p="abcdef",a[10];
for(;*p!='\0';p++)
a[i]=*p;
i++;
参考技术C #include <iostream>
using namespace std;

main()

char *str="abcdefg";
char a,b,c,d,e,f,g;
a=*str;
b=*(str+1);
c=*(str+2);
d=*(str+3);
e=*(str+4);
f=*(str+5);
g=*(str+6);
cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<" "<<f<<" "<<g<<endl;

参考技术D string s1;
char buf[1024];
strcpy(buf,s1.c_str());
大概吧

如何清除向量中的所有元素,除了C++中向量中的最后一个元素

【中文标题】如何清除向量中的所有元素,除了C++中向量中的最后一个元素【英文标题】:How to clear all elements in a vector except for the last one in a vector in c++ 【发布时间】:2021-09-06 14:49:43 【问题描述】:

正如标题所说,我有一个包含 11 个整数元素的向量,范围从 1 到 11。我正在尝试使用 .erase() 函数清除向量中除最后一个之外的所有元素。我无法使用迭代器来执行此操作,因为它们清除了除第一个元素之外的所有元素。我尝试了很多来自互联网的解决方案,例如使用 .rbegin() 和 .rend() 但他们只是给了我一个错误。

下面是我的代码:-

#include <vector>
#include <iostream>

using namespace std;

vector<int> epos = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11;
vector<int>::iterator it1, it2;

int main() 

    it1 = epos.begin();
    it2 = epos.end();

    epos.erase(it1, it2);
    for (int i=0; i<=epos.size(); i++) 
        cout << epos[i] << ' ';
    
    return 0;

我仍然是 C++ 的初学者,如果有任何帮助,我将不胜感激!

【问题讨论】:

【参考方案1】:

你快到了,使用这个语法:

 // make sure we end up with a vector with one element in it.
 // empty lists will stay empty
 if(epos.size()>1) 
 
     epos.erase(epos.begin(), epos.end() - 1);
 

你知道你也可以像这样迭代容器吗?

for (auto v : epos)

    cout << v << ' ';

它被称为基于范围的 for 循环,可以防止您在使用索引时出错

【讨论】:

以上是关于c++中如何依次读取一个string中的所有元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何清除向量中的所有元素,除了C++中向量中的最后一个元素

如何检查向量的所有元素是不是在 Eigen c++ 中的另一个向量中?

使用python依次读取文件中的所有csv格式的数据

华为机试真题 C++ 实现堆栈中的剩余数字

如何使用 C++ API 在 HDF5 文件中写入/读取锯齿状数组?

C++ 如何从string字符串中一行行读取数据