以字符串作为输入,但在c++中单独处理字符
Taking string as input but dealing with characters individually in C++
我想知道是否有任何有效的方法来获得字符串作为输入,然后对其字符单独执行一些操作?
同样,在执行操作(检查字符串的长度也可能增加或减少)之后,我们可以输出新的字符串(执行操作后得到的字符串)而不是使用for循环单独输出字符吗?
请注意时间是至关重要的因素,请提供最快的方法
是否有任何有效的方法来获取字符串作为输入,然后对其字符单独执行一些操作?
是的,有:像往常一样读取std::string
(例如,使用输入流的std::getline
或>>
操作符),然后访问循环中的单个字符。
std::string str;
std::getline(std::cin, str);
for (int i = 0 ; i != str.size() ; i++) {
std::cout << "Code of character " << i << " is " << (int)str[i] << std::endl;
}
ideone的第一个演示。
同样,在执行操作之后,我们可以输出新的字符串(执行操作后得到的字符串)而不是使用for循环单独输出字符吗?
可以:std::string
是可变的,这意味着您可以在适当的位置更改它。
std::string str;
std::getline(std::cin, str);
for (int i = 0 ; i != str.size() ; i++) {
if (!std::isalpha(str[i])) {
str[i] = '#';
}
}
std::cout << str << std::endl;
ideone的第二次演示
你可以这样做:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string in;
cout << "Input pleasen";
cin >> in;
if(in.size() >= 5)
in[5] = 'A';
cout << in << "n";
return 0;
}
或者你可以用std::getline()
代替std::cin
。
Input please
samaras
samarAs
但是,您确定这是程序的瓶颈吗?您可以使用一些分析工具来检查这一点,就像我使用的那样。
[编辑]由于OP询问效率,我做了一些测试。然而,您可以考虑用户输入所花费的时间,但由于我是同一个人,我们可以假设这是恒定的。
所以,我确实从另一个答案修改了一点代码,像这样:
std::string str;
cout << "Input pleasen";
std::getline(std::cin, str);
if (str.size() >= 5) {
str[5] = '#';
}
std::cout << str << "n";
输出:Input please
Samaras
Samar#s
It took me 1.04237 seconds.
和我的代码,我得到
Input please
Samaras
SamarAs
It took me 0.911217 seconds.
这实际上表明它们非常接近,我想说差异是由于我的打字速度。
我用std::chrono
做计时,就像我在我的伪网站的代码。
基本操作…在网上搜索一下可能会对你有所帮助,但就是这样…
std::string processStr(const std::string &str)
{
for (std::string::iterator it = str.begin(); it != str.end(); ++it)
// process your string (getting a char is done by dereferencing the iterator
// like this: *it
return (str);
}
相关文章:
- 如何在C++中从两个单独的for循环中添加两个数组
- 用C++在单独的头文件中完成函数体
- 类模板的成员功能的定义在单独的TU中完全专业化
- 如何使用单独文件中的派生类访问友元函数对象
- CoInitialize()在单独的线程上崩溃而不返回
- avrogencpp能为模式中的每种类型生成单独的头文件吗
- 转换函数,将 std::数组的双精度作为参数或双精度作为参数单独转换
- 单独定义模板化嵌套类方法的正确语法
- 如何将 2 个类分成单独的 .h 文件并正确设置它们
- C++ 链接到单独的.cpp文件说"multiple definitions"
- 从单独的文件中读取树
- 将字符串拆分为标记,并将标记拆分为两个单独的数组
- C++计算器,不能单独除以 0
- 自 Windows 10 20H1 以来,具有单独线程的多个窗口停止工作
- 当结构位于单独的头文件中时'unregistered datatype'在 QML 中出现Q_GADGET错误
- 通过单独的 tcp 流建立 http 连接
- Cmake:为 C 设置警告级别,并为 MSVC 单独设置C++代码(Visual C++)
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 如何从单独的线程控制 SFML 窗口?
- C++泛型类,单独实现?