相关疑难解决方法(0)

为什么我不应该使用atoi()?

有人告诉我,我不应该使用atoi(),而且我应该总是使用strtol().这有什么错atoi(),我不应该使用它?是strtol()真的,而不是用正确的事情?(那么strtol()返回a 的事实呢long,不是int那样的atoi()吗?)

c

8
推荐指数
3
解决办法
4049
查看次数

为什么std :: basic_string :: substr不遵循[begin,end]约定?

该方法std::basic_string::substr具有参数pos, count,指定位置[pos,pos + count + 1]中元素的逻辑范围.相反,大多数标准库函数(例如std::for_each)都有一些类似的参数begin, end,指定范围[begin,end]

这似乎是一个例外,然后,让一些人感到困惑(请参阅此处,此处,此处此处的问题).为什么这里没有采用通常的范围惯例?std::vector::erase另请注意,另一个随机访问容器的方法确实遵循通常的惯例.

c++ string range substr

2
推荐指数
2
解决办法
132
查看次数

C++字符串substr函数的索引问题

可能重复:
C++ string.substr()函数问题

string s = "0123456789";

cout<<s.substr(0,4)<<endl;

cout<<s.substr(4,7)<<endl;
Run Code Online (Sandbox Code Playgroud)

上面代码行的输出非常出乎意料,s.substr(0,4)给了我"0123",s.substr(4,7)给了我"456789".它只期待"456".我在这里遗漏了什么,并且在C++中有替代substr函数的方法,在第二次调用时只给出"456".

c++ string

0
推荐指数
1
解决办法
457
查看次数

C++ 的 substr() 到底是如何工作的?

我正在尝试打印字符串的子字符串,但 substr() 函数的行为对我来说似乎很奇怪。

在我的下面的程序中,我试图打印值为“Kamal”的字符串的子字符串。

在这里,substr(0,4) 打印“Kama”,这让我假设 0 是包含的,4 是排除的。但是 substr(1,4) 打印“amal”,这违反了我的上述理解,因为位置 4 中的字符被打印,而在之前的情况下却没有打印。你能解释一下这种奇怪的行为吗?

如果这个问题真的很愚蠢,那么这是我第一次使用 substr()。我在网上搜索过,但似乎找不到任何有用的答案。

#include<iostream>
#include<string>
using namespace std;

int main() {
    string s1 = "Kamal";

    cout << s1.substr(0, 4) << '\n';
    cout << s1.substr(1, 4) << '\n';

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出: 在此输入图像描述

c++ substring

0
推荐指数
1
解决办法
1738
查看次数

标签 统计

c++ ×3

string ×2

c ×1

range ×1

substr ×1

substring ×1