c++算法基础(二)

1、getline()

此函数可读取整行,包括前导和嵌入的空格,并将其存储在字符串对象中。

getline(cin, inputLine);

2、istringstream()

将带有空格的字符串进行切割,例如“Hello World Here I Come”切成“Hello” “World” “Here” “I” “Come”

istringstream is(str);
string s;
while (is >> s)
    {
     
        cout<<s<<endl;
        // Hello
        // World
        // Here
        // I
        // Come
    }

3、跳出双层循环(只执行一次)

(1)goto

for (int i = 0; i < len1; i++)
{
     
    for (int j = 0; j < len2; j++)
    {
     
        if (isupper(c1[i]) && isupper(c2[j]) && c1[i] == c2[j])
        {
     
            day = c1[i];
            goto breaks;
        }
    }
}
breaks: cout << day << endl;

(2)break

for (int i = 0; i < strlen(buy); i++)
{
     
    for (int j = 0; j < strlen(sell); j++)
    {
     
        if (buy[i] == sell[j])
        {
     
            count++;
            sell[j] = '*';
            break;
        }
    }
}

4、获取ASCII码

int day = int(time[0]);

5、结构体(类)多层排序

例如建立了如下一个student结构体

class student
{
     
public:
    int number;
    int degrade;
    int caigrade;
    int sumgrade;
};

其中一个很重要的细节(对我来说)是新建一个student对象时,需要确定对象的长度

student *stu = new student[N];//一定一定不能没有[N]

要根据三个number、degrade、sumgrade条件来对student进行多重排序,可以用sort()方法

#include
sort(student, student+ count1, compare);

具体的compare()方法如下:

//一定要理清楚比较的逻辑,不能随便return
bool compare(student a, student b)
{
     
    if (a.sumgrade == b.sumgrade && a.degrade != b.degrade)
    {
     
        return a.degrade > b.degrade;
    }
    else if (a.sumgrade == b.sumgrade && a.degrade == b.degrade)
    {
     
        return a.number < b.number;
    }
    else
    {
     
        return a.sumgrade > b.sumgrade;
    }
};

6、strcmp()

是一种串比较函数:看Asic码,如果str1>str2,返回值 > 0;两串相等,返回0
注意:只针对char,不针对string

#include 
#include 
#include 
#include 
#include 
using namespace std;
int main()
{
     
    char a[100] = "c";
    char b[100] = "az";
    if (strcmp(a, b) > 0)
    {
     
        cout << 111 << endl;
        return true;
    }
    else
    {
     
        cout << 222 << endl;
        return false;
    }
}

可参考C++ strcmp()
C++字符串使用整理

7、strcpy()

在c++中,将一个char赋值给另外一个char,不能使用=去赋值,要使用strcpy()

strcpy(peo[count1].name, tempname);//将tempname赋值给peo[count1].nam

你可能感兴趣的:(c++)