c++ - 我在 C++ 中的 .append 方法有很多错误
问题描述
我对 C++ 中的 .append 方法有疑问。这是我的代码:
#include<iostream>
#include<string>
using namespace std;
int main(){
char caratteri[] = {"ciao amici"};
string str = "ciao amici";
string token = "";
for(int i = 0; i<str.length(); i++)
{
if(str[i+1] == ' '){
token = "";
}
char current_token = str[i];
token.append(string(current_token));
i++;
}
}
这是我的输出的一部分:
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h:397:7: note: no known conversion for argument 1 from 'char' to 'const std::__cxx11::basic_string<char>&'
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h:389:7: note: candidate: std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]
basic_string(const _Alloc& __a) _GLIBCXX_NOEXCEPT
^~~~~~~~~~~~
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h:389:7: note: no known conversion for argument 1 from 'char' to 'const std::allocator<char>&'
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h:380:7: note: candidate: std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string() [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]
basic_string()
^~~~~~~~~~~~
为什么我会遇到这个问题?我能解决吗?非常感谢 :)
解决方案
您尝试std::string
从char
此处创建一个:
token.append(
string(current_token) // <- this part
);
std::string
要从单个创建一个char
,您需要提供您想要char
重复的次数:
token.append(string(1, current_token));
幸运的是,append
有 en 重载可以让您直接执行此操作,而无需创建中间std::string
:
token.append(1, current_token);
但最简单的可能是使用operator+=
重载添加一个char
:
token += current_token;
另请注意,这
if(str[i+1] == ' ')
str[str.length()]
何时访问i == str.length() - 1
。那就是越界访问它。它可能无论如何都会起作用,因为\0
存储的只是超出范围,但我建议您修复该逻辑。
推荐阅读
- javascript - Node.js 模块导出“预加载”
- bash - 从多个包中获取所有唯一许可证并使用 bash 脚本进行排序
- postgresql - Postgres 从文件语法错误导入数据库
- java - 处理 xml 文件时的 UTF8 编码无效
- graphql - GraphQL 是否支持相关子查询
- r - `bookdown`/`rmarkdown`/`knitr`: YAML 标头元素依赖于`knitr::opts_knit$get('rmarkdown.pandoc.to')`?
- arrays - 如何按日期字段对json数组进行排序
- python - AWS lambda,scrapy 和捕获异常
- python - 从 Seaborn regplot 中提取均值和置信区间
- python - 如何使用多个 .csv 文件应用快速傅里叶变换