gpt4 book ai didi

c++ - 在 C++ 中使用 String 类的 .substr 获取无效参数

转载 作者:行者123 更新时间:2023-11-30 04:24:33 25 4
gpt4 key购买 nike

我正在尝试使用 Eclipse 通过 C++ 中的以下函数测试字符串输入是否合法:

#include <string>

bool testLegal::checkData(std::string &input, int &reg) {

//test to see if pitchnames are legal

std::string toneClasses = "CDEFGAB";
std::string accidentals = "#b";
std::string toTest;

try {
//TEST 1 IS the pitch name legal?
toTest = input.substr(0, 1);
if (_isLegal(toTest, toneClasses) == false)
throw dataClean(2, "The pitch name you entered is illegal. Please correct it!");

//TEST 2 to see if there is a second character in the pitch name and whether it is a sharp or flat
toTest = input.substr(1);
if (input.length() == 2 && _isLegal(toTest, accidentals) == false)
throw dataClean(3, "The second character in the pitch name must be a sharp or flat");

} catch (const cExceptions& e) {
throw dataClean(4, "There is an error in the data you inputed. Please re-enter");
}
return true;
}

但是,关于 .substr 的参数,我收到了“无效参数”错误。我尝试了各种解决方案但没有成功。奇怪的是,该函数在 Netbeans 和 Codelite 中运行都没有任何问题。如果有任何想法是如何解决这个问题,我将不胜感激。感谢期待...

最佳答案

使用 NDK 时,我在 Eclipse 上遇到了类似的子字符串问题。我必须将整数转换为 string::size_type

string twoLetters = hexStr.substr((string::size_type)i,(string::size_type)2);

关于c++ - 在 C++ 中使用 String 类的 .substr 获取无效参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12662886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com