在c++中,减号和加号对字符串的作用是什么
What does minus and plus notations do on string in c++
我正在询问字符串上的加号和减号的工作,特别是在这种情况下:
Solver(string s) {
for (unsigned int i = 0; i < s.length(); i++) {
grid[i] = (int) (s[i] - '0'); // the minus here will remove 0's of string or not ?
}
}
int main() {
Solver ss(
(string) "850002400" + // the plus here will combine all strings together like Java or not ?
(string) "720000009" +
(string) "004000000" +
(string) "000107002" +
(string) "305000900" +
(string) "040000000" +
(string) "000080070" +
(string) "017000000" +
(string) "000036040"
);
}
operator+
将它们连接起来——正如您已经发现的那样。但是字符串没有operator-
!
仔细看,不是从字符串(s - '0'
(中减去,而是从字符s[i]
中减去。这不会从字符串中删除该字符,而是根据该字符的值减去零字符的值来计算一个新值(该值为48,在ASCII中是兼容的,至少不是null值!(。由于C++标准保证数字是连续的(就像在C中一样(,因此可以通过这种方式可靠地从字符中计算十进制数字。
这也适用于小于10的基数,但不适用于较大的基数,因为用于表示的下一个字符不会直接跟在十进制数字后面(您可能需要区分大写字母和小写字母(。
附带说明:您不需要强制转换为int:由于类型char
的大小小于int
,两个操作数都将隐式提升为int,因此实际上计算是在int
中完成的,结果仍然是int
。。。
string-C++引用http://www.cplusplus.com/reference/string/string/
正如上面链接中所说,运算符+的意思是"连接字符串"。如果您想CLIP字符串,可以使用s.substr((函数。
grid[i] = (int) (s[i] - '0')
代码中的减号表示将"char"转换为"int"。例如,
string s="425";
char c = s[0]; //c='4';
int value = c-'0'; //value=4 it is a number
它不是字符串的函数,只是ASCII的一种利用。函数stoi(s[i](可以实现同样的事情。
从数字的任何字符中减去"0"将返回该数字的整数值。
char seven = '7';
int value = (int)(seven - '0');
cout<<value<<endl;
输出:
7
在您的示例中,-
用于将字符网格(1D(转换为整数网格(1D(。
另一方面,两个或多个string
类型数据之间的+
符号表示串的级联。
string s = "abc" + "def";
cout<<s<<endl;
输出:
abcdef
相关文章:
- 初始化或分配空字符串文字到指向 C 中的 char 的指针或指向 C++ 中 const char 的指针的原因是什么
- 在C++17中,引用const字符串的语义应该是什么
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 字符串上的 C++ push_back() 和 pop_back() 的 Kotlin 是什么?
- 这里的字符串函数是什么意思
- 将位字符串转储到二进制文件的最佳方法是什么
- 是什么使这个以'+'开头的字符串添加成为有效的语句?
- 在c++中,减号和加号对字符串的作用是什么
- 当我们已经有 char[] 时,在 c++ 中字符串的必要性是什么?
- C++ 将字符串数据包转换为 iphdr语言 - 字符串数据包的格式应该是什么?
- 这句话是什么意思?半 += 字符串(频率[i] / 2, i + 'a');
- Xamarin Android:在 C++ 中将字符串从 C# 封送到 Unicode 字符串的正确方法是什么?
- 使用c 中的sort()函数对字符串进行排序的最坏情况是什么是什么
- 字符串文本不能有外部链接的原因是什么?
- 当我打印字符串时,我不知道它是什么输出
- 字符串中单个字符作为数组的数据类型是什么
- 检查字符串是否与可能的输入之一匹配的最有效方法是什么?
- '|' scanf 格式字符串是什么意思
- 一个字符串开始另一个字符串是什么意思?c++
- 表示文件路径的guid字符串是什么?