循环未修改的字符串
String not modified by loop
我正在解决以下问题:
赋值是创建并返回一个string
对象,该对象由通过函数参数发送的int
中的数字组成;因此函数调用string pattern(int n)
的预期输出将是"1n22n..nn"
。
如果您有兴趣,这里是完整作业的URL(您需要登录才能查看(,CodeWars Kata
这是测试之一(包括我的回报(:
测试用例输入:模式(2(
预期:
1
22
实际:"输出">
//string header file and namespace are already included for you
string pattern(int n){
string out = "OUTPUT";
for (int i = 1; i <= n; ++i){
string temp = "";
temp.insert(0, i, i);
out += temp;
}
return out;
}
代码是不言自明的,我相信有多种方法可以使其运行得更快、更高效。
我的问题是双重的。为什么我的循环不启动(即使我的表达式在上述情况下应该成立 (1 <= 2((?
我的代码在宏伟的计划中如何成立?我是否违反了任何最佳实践?
您正在使用的std::string::insert()
的重载需要三个参数:
- 指数
- 计数
- 字符
您正在使用i
作为计数和字符。但是,该函数要求字符为char
类型。在您的情况下,您的i
被解释为带有 1
和 2
代码的字符,它们基本上是空格(嗯,不是真的,但无论如何(。因此,您的输出实际上看起来像OUTPUT___
其中___
是三个空格。
如果您查看 ascii 表,您会注意到数字0123...9
具有从 48 到 57 的索引,因此要获得特定数字的索引,您可以执行 i + 48
或i + '0'
(其中'0'
是 0
的索引,即 48(。最后,您可以在构造函数中完成所有操作:
string temp(i, i + '0');
循环有效 - 但不做任何可见的操作。您插入字符代码 1 - 而不是字符"1";用:
temp.insert(0, i, '0'+i);
插入
方法不调用 right:temp.insert(0, i, i(;--->
temp.insert(0, i, i+'0'(;
相关文章:
- 在 txt 文件中搜索中间子字符串未被选中的字符串
- Gettin 目标模式不包含来自未修改的生成文件的"%"?
- 为什么SV后缀引入的字符串未过期
- 使用指标后数组未修改
- 有效地返回未修改的参数
- 带有口音的宽字符串未输出
- 静态链接 MFC 时,未修改的 Visual Studio 2012 MFC 模板中出现链接错误
- 是否可以在 C++ 中使用运算符重载来更改(未修改的)包含函数的含义
- php openssl 签名字符串未通过 Win CryptoAPI 验证
- 类固有虚拟字符串未返回正确的东西
- 字符串未返回到主函数
- "字符串"未命名类型 - C++ 错误
- 字符串未存储在向量中
- C++Visual Studio类错误标识符字符串未定义
- C++ Arduino 类文件中的字符串未编译
- 字符串未使用 std::cout 打印
- 使用 SQL Server 和 Oracle 中的字符串使用相同的未修改查询进行连接
- 未修改 CUDA 内核函数输出变量
- 字符串未使用 <openssl/aes>正确解密
- 循环未修改的字符串