[英]string x and int y as parameters of function- Cannot use if (x.length()<y) inside the function?
我正在嘗試創建以下過程:
void something(string x, int y)
{
if(x.length()<=y)
etc.
}
它編譯但計算機瘋了,打印出各種奇怪的符號,發出嗶嗶聲然后崩潰。
我相信這是因為我不能使用if(x.length()<y)如果x仍然是未知的,因為我正在創建一個過程。我想我必須將我的字符串x轉換為c字符串,但我不知道我不知道該怎么做。
你確定它是比較的部分,事情變得瘋狂嗎?
我的測試程序test
:
#include <string>
#include <cstdio>
using namespace std;
void something(string x, int y) {
if(x.length() <= y)
printf("Length smaller or equal\n");
else
printf("Length larger\n");
}
int main(int argc, char** argv) {
string x = "This is a string";
int y1 = 10;
int y2 = 20;
something(x, y1);
something(x, y2);
return 0;
}
使用g++ test
編譯,這會產生一個名為a.out
的可執行文件,在運行時會生成所需的輸出:
$ ./a.out
Length larger
Length smaller or equal
注意:這是在Ubuntu上,但我想不出為什么這應該在Windows上失敗的原因。
您的問題可能是在發布的代碼中的其他地方。 你的假設'我相信它是因為我不能使用if(x.length()<y)如果x仍然是未知的,因為我正在創建一個過程'是錯誤的,代碼是在你調用函數后執行的指定的參數。 檢查你的字符串是否已正確初始化(這可能是因為你使用字符串類,即使你沒有為它指定任何東西,它也會初始化為空字符串)。 順便說一句,將std :: string轉換為c-string的最佳方法是使用字符串類的c_str()方法,但它不能解決您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.